//引入Vue核心库
import Vue from 'vue'
//引入Vuex
import Vuex from 'vuex'
import axios from 'axios'
import { nanoid } from 'nanoid'
//应用Vuex插件
Vue.use(Vuex)

// 求和相关
const countOption = {
    namespaced: true,
    actions: {
        addOdd (context, value) {
            if (context.state.sum % 2) {
                context.commit('ADD', value)
            }
        },
        addWait (context, value) {
            setTimeout(() => {
                context.commit('ADD', value)
            }, 500)
        },
    },
    mutations: {
        ADD (state, value) {
            // console.log('mutation中的ADD被调用了', state, value)
            state.sum += value
        },
        SUB (state, value) {
            state.sum -= value
        },
    },
    state: {
        sum: 0,
        school: 'Bilibili',
        subject: 'vue',
    },
    getters: {
        bigSum (state) {
            return state.sum * 10
        }
    }
}


// 人员相关
const personOption = {
    namespaced: true,
    actions: {
        addPersonServe (context) {
            axios.get('http://api.uixsj.cn/hitokoto/get?type=social').then(
                (response) => {
                    context.commit('ADD_PERSON', { id: nanoid(), name: response.data })
                },
                (error) => {
                    alert(error.message);
                }
            )
        }
    },
    mutations: {
        ADD_PERSON (state, value) {
            console.log('mutation中的ADD_PERSON被调用了', state, value)
            state.personList.unshift(value)
        }
    },
    state: {
        personList: [
            { id: '001', name: '张三' }
        ]
    },
    getters: {}
}



// //准备actions对象——响应组件中用户的动作
// const actions = {
//     /* add (context, value) {
//         // console.log('action中的add被调用了', context, value);
//         context.commit('ADD', value)
//     },
//     sub (context, value) {
//         context.commit('SUB', value)
//     }, */
//     addOdd (context, value) {
//         if (context.state.sum % 2) {
//             context.commit('ADD', value)
//         }
//     },
//     addWait (context, value) {
//         setTimeout(() => {
//             context.commit('ADD', value)
//         }, 500)
//     },
// }
// //准备mutations对象——操作state中的数据
// const mutations = {
//     ADD (state, value) {
//         // console.log('mutation中的ADD被调用了', state, value)
//         state.sum += value
//     },
//     SUB (state, value) {
//         state.sum -= value
//     },
//     ADD_PERSON (state, value) {
//         console.log('mutation中的ADD_PERSON被调用了', state, value)
//         state.personList.unshift(value)
//     }
// }
// //准备state对象——存储具体的数据
// const state = {
//     sum: 0,
//     school: 'Bilibili',
//     subject: 'vue',
//     personList: [
//         { id: '001', name: '张三' }
//     ]
// }
// //准备getters对象——将state中的数据进行加工
// const getters = {
//     bigSum (state) {
//         return state.sum * 10
//     }
// }

//创建并暴露store
export default new Vuex.Store({
    // actions,
    // mutations,
    // state,
    // getters
    modules: {
        countAbout: countOption,
        personAbout: personOption
    }
})